/*
 * @Author: Even
 * @Date: 2023-11-28 20:03:30
 * @LastEditors: Even
 * @LastEditTime: 2023-12-28 23:00:19
 * @FilePath: \opencos\include\customer\customer.h
 * @Description:
 */
#ifndef OPENCOS_CUSTOMER_H
#define OPENCOS_CUSTOMER_H

#include "customer/customer_member_rank.h"

#include <string>

class Customer
{
public:
    Customer() = default;
    Customer(int id, std::string name, std::string contact, float total_consumption, MemberRank member_rank);

    [[nodiscard]] int get_id() const;
    std::string       get_contact();
    std::string       get_name();
    float             get_total_consumption();
    void              set_total_consumption(float total_consumption);
    MemberRank        get_member_rank() const;
    void              set_member_rank(MemberRank member_rank);
    void              set_contact(const std::string &contact);

private:
    std::string name_;
    std::string contact_;
    int         id_;

    float      total_consumption_ = -1.0;
    MemberRank member_rank_       = MemberRank::NOT_MEMBER;
};

#endif